package com.misyi.designpattern.singleton;

/**
 * 线程不安全的饱汉模式
 *
 * @author licong
 * @date 2021-09-11 下午9:07
 */
public class UnsafeFullSingletonPatternDemo {

    /**
     * 线程不安全
     *
     */
    private static class Singleton {

        private static Singleton instance;

        private Singleton() {

        }

        public static Singleton getInstance() {
            /*
             * 假设两个线程过来
             *
             * 线程的基础: 线程是并发执行的, cpu, 先执行一会儿线程, 停止执行线程1, 切换执行线程2,
             * 执行线程2 一段时间后, 再停止执行线程, 回来继续执行线程1
             *
             * 第一个线程, 判断 instance == null, 代码执行下去了, 但是还没有执行 instance = new Singleton()
             * 第二个线程, 执行到这里, 发现 instance 还是为 null, 继续执行 instance = new Singleton()
             */
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }

    }
}
